home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / esc.jar / com / extensibility / xml / ImportXMLHandler.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-06-30  |  4.1 KB  |  124 lines

  1. package com.extensibility.xml;
  2.  
  3. import java.io.IOException;
  4. import java.io.StringReader;
  5. import java.util.Enumeration;
  6. import java.util.Hashtable;
  7. import java.util.Stack;
  8. import java.util.Vector;
  9. import org.xml.sax.AttributeList;
  10. import org.xml.sax.HandlerBase;
  11. import org.xml.sax.InputSource;
  12. import org.xml.sax.Parser;
  13. import org.xml.sax.SAXException;
  14.  
  15. public class ImportXMLHandler extends HandlerBase {
  16.    SchemaIntf schema;
  17.    private Hashtable m_hashElements;
  18.    private Vector m_vectElements;
  19.    private Stack m_stack;
  20.    private EView m_view;
  21.  
  22.    public ImportXMLHandler(SchemaIntf var1) {
  23.       this.schema = var1;
  24.    }
  25.  
  26.    public ImportXMLHandler(String var1) {
  27.       String var2 = "http://Schema";
  28.       if (var1.equalsIgnoreCase("sox")) {
  29.          var2 = "urn:xa:tempurn";
  30.       }
  31.  
  32.       this.schema = new Schema(new URI(var2), var1);
  33.    }
  34.  
  35.    public void startDocument() {
  36.       this.m_stack = new Stack();
  37.       this.m_hashElements = new Hashtable();
  38.       this.m_vectElements = new Vector();
  39.       this.m_view = null;
  40.    }
  41.  
  42.    public void endDocument() {
  43.    }
  44.  
  45.    public InputSource resolveEntity(String var1, String var2) throws SAXException {
  46.       return new InputSource(new StringReader(""));
  47.    }
  48.  
  49.    public void startElement(String var1, AttributeList var2) {
  50.       EModel var3 = (EModel)this.m_hashElements.get(var1);
  51.       if (null == var3) {
  52.          var3 = new EModel(this, var1);
  53.          this.m_hashElements.put(var1, var3);
  54.          this.m_vectElements.addElement(var3);
  55.       }
  56.  
  57.       var3.addAttributes(var2);
  58.       if (null != this.m_view) {
  59.          this.m_view.addElement(var1);
  60.          this.m_stack.push(this.m_view);
  61.       }
  62.  
  63.       this.m_view = new EView((ImportXMLHandler)null, var3);
  64.    }
  65.  
  66.    public void endElement(String var1) {
  67.       if (!this.m_stack.empty()) {
  68.          this.m_view = (EView)this.m_stack.pop();
  69.       }
  70.  
  71.    }
  72.  
  73.    public void characters(char[] var1, int var2, int var3) throws SAXException {
  74.       for(int var4 = var2; var4 < var2 + var3; ++var4) {
  75.          if (!DTDParser.isWhiteChar(var1[var4])) {
  76.             this.m_view.addCharacters();
  77.             return;
  78.          }
  79.       }
  80.  
  81.    }
  82.  
  83.    public void makeDeclarations(SchemaIntf var1) {
  84.       Enumeration var2 = this.m_vectElements.elements();
  85.  
  86.       while(var2.hasMoreElements()) {
  87.          EModel var3 = (EModel)var2.nextElement();
  88.          ElementDeclaration var4 = var3.makeElement();
  89.          var3.makeAttributes(var4);
  90.          var1.insertDeclaration(var4, (BaseDeclaration)null);
  91.       }
  92.  
  93.    }
  94.  
  95.    public SchemaIntf doImport(String var1) throws SAXException {
  96.       Parser var2 = SchemaUtilities.getParser();
  97.       var2.setEntityResolver(this);
  98.       var2.setErrorHandler(this);
  99.       var2.setDocumentHandler(this);
  100.       StringReader var3 = null;
  101.  
  102.       Object var5;
  103.       try {
  104.          var3 = new StringReader(var1);
  105.          var2.parse(new InputSource(var3));
  106.          this.makeDeclarations(this.schema);
  107.          return this.schema;
  108.       } catch (IOException var15) {
  109.          ((Throwable)var15).printStackTrace();
  110.          var5 = null;
  111.       } finally {
  112.          try {
  113.             if (var3 != null) {
  114.                var3.close();
  115.             }
  116.          } catch (Exception var14) {
  117.          }
  118.  
  119.       }
  120.  
  121.       return (SchemaIntf)var5;
  122.    }
  123. }
  124.